Increases in processing capability and decreases in cost of personal computers have led to the proliferation of personal computers in all aspects of society, including schools, homes and businesses. Nowhere has this proliferation of personal computers been more prevalent than in the increased use of portable computers. In recent years, decreasing power requirements and the availability of small, high-performance microprocessors has led to a dramatic increase in the use of portable data processors such as a laptop computers, notebook computers, and personal data assistants such as the Apple Newton.RTM., U.S. Robotic Pilot.RTM. or the Sharp Wizard.RTM.. Additionally, an ever increasing number of users are developing and utilizing application specific portable data processors which are custom designed to carry out a specific task, such as, for example, electronically tracking inventory, parcels or the like.
Although the use of advanced microprocessors and low-power electronics have significantly enhanced the processing capabilities achievable by today's portable data processors, it is still often desirable that the portable unit be capable of accessing a remotely located host computer or network. Such remote access is typically established via a communications interface at each data processor that transmits or receives information.
Numerous portable data processing scenarios are designed to take advantage of such remote accessing capability, such as laptop computers configured for access to the Internet or a shared filing system, and systems which use multiple portable data processors to collect and transmit information from remote locations to a shared, centralized database. Moreover, tradeoffs between the size of a portable data processor, its processing capability, and its cost may limit the processing capabilities of a portable data processor. In such instances, remote access to a host computer or network may be desirable or even essential as a method of augmenting the processing capabilities of the portable data processor. Thus, for example, many hand-held portable data processors access applications which are resident on a remote host data processor, and thus intermittent access to the remote host is essential for proper use of the hand-held processor.
As discussed above, however, many portable data processors, including most hand-held processors, have only limited power and space available. In particular, portable data processors have limited memory due to physical constraints of portability. Such machines are "memory constrained" in the sense that insufficient memory is often available on the machine to store all the applications, objects, or other information that may be desirable while simultaneously running the desired number of applications. These memory constraints are compounded when such a portable data processor is only intermittently connected to the host computer or network, as the limited memory must also be used to transmit messages to the host computer that are generated while the portable unit is disconnected from the host. In fact, when such a memory constrained portable data processor experiences prolonged periods of usage while disconnected from the network, it is possible that the stored messages for transmission to a host processor may require nearly all the available memory and, therefore, limit the operability of the portable data processor until such time as the network connection is reestablished and the messages are delivered and removed from memory. Such occurrences are particularly problematic in object-oriented systems, as a single object can be comprised of references to the data of numerous other objects, and hence transmission of a single object can require transmission of numerous other objects which must be stored until the network connection is reestablished.
Efforts to overcome the above-described problems that may arise in memory constrained portable data processors generally have focused on improving the hardware capabilities of the portable unit, so as to provide additional memory and thereby alleviate the problem. However, such improvements have not solved the problem as more powerful software applications and expanding requirements for remote processing capability have generally out paced the advances in hardware capabilities. Moreover, less attention has been paid to more efficiently using the memory that is available at the portable unit to provide increased performance in memory constrained environments. Accordingly, there is a need to more efficiently utilize the available memory in portable data processors which only intermittently access a remote host or network.